package wodegua.d24_file_io;

import java.io.FileWriter;
import java.io.Writer;

/**
 * FileWriter(文件字符输出流)
 * 作用:以内存为基准，把内存中的数据以字符的形式写出到文件中去。
 *
 * 构造器
 * public FileWriter(File file)     创建字节输出流管道与源文件对象接通
 * public FileWriter(string filepath)   创建字节输出流管道与源文件路径接通
 * public FileWriter(File file, boolean append)     创建字节输出流管道与源文件对象接通，可追加数据
 * public FileWriter(string filepath,boolean append)    创建字节输出流管道与源文件路径接通，可追加数据
 *
 * void write(int c)    写一个字符
 * void write(String str)   写一个字符串
 * void write(String str, int off, int len)     写一个字符串的一部分
 * void write(char[] cbuf)  写入一个字符数组
 * void write(char! cbuf int off int len)   写入字符数组的一部分
 *
 * 字特输出流使用时的注意事项
 * 字符输出流写出数据后，必须刷新流，或者关闭流，写出去的数据才能生效
 *
 * 方法名称
 * public void flush()throws IOException    刷新流，就是将内存中缓存的数据立即写到文件中去生效!
 * public void close() throws IOException   关闭流的操作，包含了刷新!
 *
 * 字节流、字符流的使用场景小结:
 * 字节流适合做一切文件数据的拷贝(音视频，文本);字节流不适合读取中文内容输出。
 * 字符流适合做文本文件的操作(读，写)。
 */
public class d13_IoFileWriterTest {
    /**
     * 目标:掌握文件字符输出流:写字符数据出去
     */
    public static void main(String[] args) {
        try (
                //覆盖式通道
//                Writer fw = new FileWriter("helloworld-app/charOut.txt");
                //追加式通道
                Writer fw = new FileWriter("helloworld-app/charOut.txt",true);
                ) {
            // 1、public void write(int c):写一个字符出去
            fw.write(48);
            fw.write(65);
            fw.write("\r\n");

            //2、public void write(string c)写一个字符串出去
            fw.write("我爱你中国abc");
            fw.write("\r\n");

            // 3、public void write(string c ,int pos ,int len):写字符串的一部分出去
            fw.write("我爱你中国abc",0,5);
            fw.write("\r\n");

            //4、public void write(char[]buffer):写一个字符数组出去
            char[] buffer = {'我','爱','你','中','国','a','b','c'};
            fw.write(buffer);
            fw.write("\r\n");

            // 5、public void write(char[] buffer ,int pos ,int len):写字符数组的一部分出去
            fw.write(buffer,0,5);
            fw.write("\r\n");

        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            Writer fw = new FileWriter("helloworld-app/charOut2.txt");
            fw.write('0');

//            fw.flush();
//            fw.write('a');
//            fw.flush();

            fw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
